function out = loadData_2020(startYear,endYear)

% labels:
maturities = [1 4 12 20 28 40];
tmp = xlsread('dataUS_quarterly_v2_coreInfl_2020.xlsx','dataMatlab','A2:V700');
data = tmp(:,2:end); %omitting the time index
timeIndex  = x2mdate(tmp(:,1)); %datestr(x2mdate(tmp(:,1)));
dataLabels = {'$\hat{ l_{t}}$','$\hat{ w_{t}}$','$\Delta c_{t}$','$\pi_t$',...
    '$r_t$','$r^{(4)}_t$','$r^{(12)}_t$',...
    '$r^{(20)}_t$','$r^{(28)}_t$','$r^{(40)}_t$',...
    '$E_{t}\left[ r_{t+1}\right] $','$E_{t}\left[ r_{t+2}\right] $',...
    '$E_{t}\left[ r_{t+3}\right] $','$E_{t}\left[ r_{t+4}\right] $',...
    'NBER' 'realR12'	'realR20'	'realR28' 'realR40'};


% New labor series - All Employees: Total Nonfarm Payrolls, Thousands of Persons, Quarterly, Seasonally Adjusted
% dates nonpay
tmpLabor = xlsread('PAYEMS_2020.xlsx');
timeIndexLabor = x2mdate(tmpLabor(:,1));
%datestr(timeIndexLabor)
laborDevTrend = [timeIndexLabor runHamiltonFilter(log(tmpLabor(:,2)))];
% We start in july 1961: datestr(laborDevTrend(91,1))
data(:,1) = laborDevTrend(91:end,2);

% Data on real wages - Nonfarm Business Sector: Real Hourly Compensation 
% for All Employed Persons, Index 2012=100, Quarterly, Seasonally Adjusted
tmpWage = xlsread('COMPRNFB.xlsx');
timeIndexWage = x2mdate(tmpWage(:,1));
%datestr(timeIndexWage)
wageDevTrend = [timeIndexWage runHamiltonFilter(log(tmpWage(:,2)))];
% We start in july 1961: datestr(wageDevTrend(59,1))
data(:,2) = wageDevTrend(59:end,2);


% Load additional yields for the CS regressions
tmp            = load('GSW_yieldsMd_Mat3Md_2021.mat');
idx            = 2:3:size(tmp.yieldsMd_Mat3Md,1)-4;
yieldsAll      = tmp.yieldsMd_Mat3Md(idx,3:42)/100;
maturitiesMdAll  = tmp.yieldsMd_Mat3Md(1,3:42);
%datestr(tmp.yieldsMd_Mat3Md(idx,1))
% Check 10-year: yieldsAll(:,40)-data(:,9)
% Overwriting the 3-month yield in GSW by the yield in the secondary market
yieldsAll(:,1) = data(:,5);

% Loading 10-year Term premium estimate from the ACM model
acm = load('ACM_tp.mat');

% Setting the start and end dates for the data.
startObs = min(find(year(timeIndex)==startYear));
endObs   = max(find(year(timeIndex)==endYear));

acm.tp5y = acm.tp5y(startObs:endObs)*100;
acm.tp10y = acm.tp10y(startObs:endObs)*100;
acm.dates = acm.dates(startObs:endObs);

%% Loading stock market data from CRSP
CRSP = load("pd_dg_quarterly.mat");
selectCRSP = (year(CRSP.t_q) >= startYear) .* (year(CRSP.t_q) <= endYear);
idx = find(selectCRSP);
selectCRSP(idx(1,1)) = 0;     %remove first observation in Q1 in 1961
selectCRSP(idx(1,end)) = 0;   %remove last observation in endYear
%datesCRSP = CRSP.t_q(selectCRSP==1);
% Note that all returns in CRSP are nominal, but when looking at excess
% returns, then inflation drops out (at least approximately).

%% Loading sentiment indicator
% labels       dates    	Michigan	OECD	Business	d
Sentiment      = xlsread("SentimentIndicators_v2.xlsx");
timeIndexSent  = x2mdate(Sentiment(:,1)); %datestr(x2mdate(Sentiment(:,1)));
selectSent     = find((year(timeIndexSent) >= startYear) .* (year(timeIndexSent) <= endYear));
%% The output
out.numMacro       = 4;
out.numYields      = length(maturities);
out.matConShortRate= [1 2 3 4];
out.maturities     = maturities;
out.data           = data(startObs:endObs,1:14);
out.NBERrec        = ceil(data(startObs:endObs,15)); %ceil ensures that NBER is either 0 or 1
out.realYields     = data(startObs:endObs,16:19);
out.maturitiesReal = [12 20 28 40];
out.timeIndex      = timeIndex(startObs:endObs);
out.dataLabels     = dataLabels;
out.yieldsAll      = yieldsAll(startObs:endObs,:);
out.maturitiesMdAll= maturitiesMdAll;
out.acm_tp         = acm;
out.pdCash         = CRSP.pd_cash_q(selectCRSP==1);
out.pdMarket       = CRSP.pd_M_q(selectCRSP==1);
out.retCash        = CRSP.ret_cash_q(selectCRSP==1);
out.retMarket      = CRSP.ret_M_q(selectCRSP==1);
out.rfCRSP         = CRSP.rf_q(selectCRSP==1);
out.sentimentMich  = Sentiment(selectSent,2);
out.sentimentOECD  = Sentiment(selectSent,3);
end